package br.com.vestibulation.backbean;

import br.com.vestibulation.bean.Pessoa;
import br.com.vestibulation.dao.AdminDAO;
import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.bean.*;
import org.primefaces.event.RowEditEvent;

@ManagedBean(name="adminBackBean")
@SessionScoped
public class AdminBackBean {
    private ArrayList<Pessoa> listaPessoas;
    private ArrayList<Pessoa> listaPessoasOld;
    private Pessoa pessoa;
    
    public AdminBackBean(){
        AdminDAO dao = new AdminDAO();
        pessoa = new Pessoa();
        listaPessoas = dao.listarAdmins();
        listaPessoasOld = dao.listarAdmins();
    }
    
    public ArrayList<Pessoa> getListaPessoas() {
        return listaPessoas;
    }

    public void setListaPessoas(ArrayList<Pessoa> listaPessoas) {
        this.listaPessoas = listaPessoas;
    }

    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }

    public String cadastrar(){
        AdminDAO dao = new AdminDAO();
        if(dao.procurarAdmin(pessoa.getUsuario())){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Usuário já existe.", "Tente novamente."));
        } else{
            if(dao.cadastrarAdmin(pessoa)){
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Sucesso!", "Cadastro realizado com sucesso!"));
            } else{
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro no cadastro.", "Tente novamente mais tarde."));
            }
        }
        listaPessoas = dao.listarAdmins();
        listaPessoasOld = dao.listarAdmins();
        pessoa = new Pessoa();
        return null;
    }

    public String excluir(Pessoa pessoa){
        AdminDAO dao = new AdminDAO();
        dao.excluirAdmin(pessoa.getUsuario());
        listaPessoas = dao.listarAdmins();
        listaPessoasOld = dao.listarAdmins();
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Admin excluído com sucesso."));
        return null;
    }
        
    public void alterarPessoa(RowEditEvent event){
        AdminDAO dao = new AdminDAO();
        pessoa = (Pessoa) event.getObject();
        int i = listaPessoas.indexOf(pessoa);
        if(pessoa.getUsuario().equals("") || pessoa.getSenha().equals("")){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Campo usuário/senha não pode ser vazio.", "Tente novamente."));
        } else if(dao.updateAdmin(pessoa, listaPessoasOld.get(i).getUsuario())){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Alteração realizada com sucesso!"));            
        } else{
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro na alteração.", "Tente novamente mais tarde."));
        }
        
        pessoa = new Pessoa();
                
        listaPessoas = dao.listarAdmins();
        listaPessoasOld = dao.listarAdmins();
    }
    
}
